In recent years, with increased use of enterprise computing and services, companies have desired to provide computing facilities in various geographical locations for better performance. Furthermore, to better prepare for potential natural or man-made disasters, companies have desired to co-locate important data in different locations so that if the facilities at one location are damaged, another location is available to continue working.
In large organizations, clusters of computers are often used. A cluster is typically a network of two or more clusters or sets of computer nodes, each of which are essentially identical, and each of which provide the same services or resources. The nodes are grouped together to form a centrally-accessible set of resources. Since each node in a cluster is essentially identical, when one cluster node fails while performing a task or providing a service, another node in the cluster can automatically take over providing that service.
More recently, application server customers have expressed a desire to provide failover services across two or more clusters for HTTP sessions. With traditional systems, the only workaround technique available for providing failover across clusters has been to use a third-party solution, such as Java Database Connectivity (JDBC) persistence. In this workaround, customers were forced to use JDBC persistence along with a third-party database solution such as Veritas' Volume Replicator product, or EMC's Symmetrix Remote Data Facility, to replicate session state from one site to another (by writing session information through JDBC to the database, replicating the database across the sites, and reading the session information back, again through JDBC). However, the need to integrate these different technologies from multiple vendors is not satisfactory from a performance or reliability standpoint.
What is needed therefore are solutions for those application server customers who need high availability across clusters, and across multiple geographic locations, while also requiring high performance for HTTP sessions.